﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using AutoBackupDatabase.BLL;
using AutoBackupDatabase.General;
using AutoBackupDatabase.ENT;
using AutoBackupDatabase.Form;
namespace AutoBackupDatabase
{
    public partial class Material_ucc : DevExpress.XtraEditors.XtraUserControl
    {
        private MATERIALBLL itemTypeBLL;
        List<MATERIALENT> listItemType;
        UNITBLL unitBLL;
        public Material_ucc()
        {
            InitializeComponent();
            itemTypeBLL = new MATERIALBLL();
            listItemType = new List<MATERIALENT>();
            unitBLL = new UNITBLL();
        }


        private void btnAdd_Click(object sender, EventArgs e)
        {

            if (!checkRole.CHECKROLE(general.groupUserCode, Role.material_add))
            {
                MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                return;
            }
            if (btnAdd.Text == "THÊM MỚI")
            {
                general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                txtunitcode.Text = "";
                txtunitname.Text = "";
                txtunitname.Enabled = true;
                txtquantity.Enabled = true;
                glkUnit.Enabled = true;
                return;
            }
            else if (btnAdd.Text == "LƯU")
            {

                if (!Validator.IsNull(txtunitname.Text))
                {
                    MessageBox.Show("Tên loại nguyên liệu không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                    return;
                }

                if (listItemType.Exists(p => p.MATERIALNAME.Equals(txtunitname.Text.TrimStart().TrimEnd())))
                {
                    MessageBox.Show("Tên loại nguyên liệu này [" + txtunitname.Text + "] đã tồn tại vui lòng nhập tên khác", "Thông báo");
                    return;
                }

                if (glkUnit.EditValue==null||glkUnit.EditValue.ToString()=="")
                {
                    MessageBox.Show("Chọn đơn vị", "Thông báo");
                    return;
                }

                try
                {
                    float.Parse(txtquantity.Text);
                }
                catch (Exception)
                {
                    
                    MessageBox.Show("Số lượng phải là số ","Thông báo");
                    return;
                }

                MATERIALENT ent = new MATERIALENT();

                ent.MATERIALNAME = txtunitname.Text.TrimStart().TrimEnd();
                ent.QUANTITY = float.Parse(txtquantity.Text);
                ent.UNITID=int.Parse(glkUnit.EditValue.ToString());
                if (itemTypeBLL.INSERTMATERIAL(ent))
                {
                    txtunitcode.Text = "";
                    txtunitname.Text = "";
                    txtquantity.Text="0";
                    general.ChangeButtonStatus("insert", btnAdd, btnUpdate, btnDelete);
                    txtunitname.Enabled = false;
                    txtquantity.Enabled = false;
                    glkUnit.Enabled = false;
                    MessageBox.Show("Thêm mới thành công", "Thông báo");

                    LoadItemType();
                }
                else
                {
                    MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
                }
            }
            else
                MessageBox.Show("Thêm mới thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
        }

        private void LoadItemType()
        {

            listItemType = itemTypeBLL.GET_MATERIAL_ALL();
            gridControl1.DataSource = listItemType;
            if (gridView1.RowCount > 0)
            {
                gridView1.InvertRowSelection(0);
            }
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {

                if (!checkRole.CHECKROLE(general.groupUserCode, Role.material_edit))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnUpdate.Text == "CẬP NHẬT")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtunitname.Enabled = true;
                    txtquantity.Enabled = true;
                    glkUnit.Enabled = true;
                    return;

                }
                else
                    if (btnUpdate.Text == "HỦY")
                    {
                        general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                        txtunitname.Enabled = false;
                        txtquantity.Enabled = false;
                        glkUnit.Enabled = false;
                    }
                    else if (btnUpdate.Text == "LƯU")
                    {

                        if (glkUnit.EditValue == null || glkUnit.EditValue.ToString() == "")
                        {
                            MessageBox.Show("Chọn đơn vị", "Thông báo");
                            return;
                        }

                        try
                        {
                            float.Parse(txtquantity.Text);
                        }
                        catch (Exception)
                        {

                            MessageBox.Show("Số lượng phải là số ", "Thông báo");
                        }
                        if (!Validator.IsNull(txtunitname.Text))
                        {
                            MessageBox.Show("Tên loại nguyên liệu không được bỏ trống vui lòng kiểm tra lại", "Thông báo");
                            return;
                        }



                        MATERIALENT ent = new MATERIALENT();
                        ent.MATERIALID = int.Parse(txtunitcode.Text);
                        ent.MATERIALNAME = txtunitname.Text.TrimStart().TrimEnd();
                        ent.QUANTITY=float.Parse(txtquantity.Text);
                        ent.UNITID = int.Parse(glkUnit.EditValue.ToString());
                        if (itemTypeBLL.UPDATEMATERIALBYMATERIALID(ent))
                        {
                            MessageBox.Show("Cập nhật thành công", "Thông báo");
                            txtunitname.Enabled = false;
                            txtquantity.Enabled = false;
                            glkUnit.Enabled = false;
                            LoadItemType();
                            general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                            
                        }
                    }
                    else
                        MessageBox.Show("Cập nhật thất bại vui lòng kiểm tra lại dữ liệu ", "Thông báo");
            }
            catch (Exception)
            {

                return;
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (!checkRole.CHECKROLE(general.groupUserCode, Role.material_delete))
                {
                    MessageBox.Show("Bạn chưa chưa được cấp quyền sử dụng cho tính năng này");
                    return;
                }
                if (btnDelete.Text == "HỦY")
                {
                    general.ChangeButtonStatus("update", btnAdd, btnUpdate, btnDelete);
                    txtunitname.Enabled = false;
                    txtquantity.Enabled = false;
                    glkUnit.Enabled = false;
                }
                else if (btnDelete.Text == "XÓA" && Validator.IsNull(txtunitcode.Text))
                {
                    if (MessageBox.Show(MessageShow.delConfirmInfo, MessageShow.delConfirmCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    {
                        MATERIALENT ent = new MATERIALENT();
                        ent.MATERIALID = int.Parse(txtunitcode.Text);
                        itemTypeBLL.DELTELEMATERIALBYMATERIALID(ent);
                        LoadItemType();
                        general.ChangeButtonStatus("delete", btnAdd, btnUpdate, btnDelete);
                    }
                }
                else
                    return;
            }
            catch (Exception)
            {

                return;
            }
        }

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            try
            {
                if (e.RowHandle >= 0)
                {
                    MATERIALENT depart = (MATERIALENT)gridView1.GetFocusedRow();
                    txtunitcode.Text = depart.MATERIALID.ToString();
                    txtunitname.Text = depart.MATERIALNAME;
                    txtquantity.Text = depart.QUANTITY.ToString();
                    glkUnit.EditValue = depart.UNITID;
                }
            }
            catch (Exception)
            {

                return;
            }
        }

        private void glkUnit_Properties_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            if (glkUnit.Properties.Buttons[1] == e.Button)
            {
                frmUnit area = new frmUnit();
                area.ShowDialog();
                LoadUnit();
            }
        }
        DETAILGROUPUSERROLEBLL checkRole = new DETAILGROUPUSERROLEBLL();

        private void Material_ucc_Load(object sender, EventArgs e)
        {
            try
            {
                

              
            
                LoadItemType();
                LoadUnit();

            }
            catch (Exception)
            {


            }
         
        }

        private void LoadUnit()
        {
            glkUnit.Properties.DataSource = unitBLL.GET_UNIT_ALL();
            glkUnit.Properties.DisplayMember = "UNITNAME";
            glkUnit.Properties.ValueMember = "UNITID";
        }

    }
}
